﻿namespace Lite.Messaging
{
    /// <summary>
    /// A factory for creating <see cref="Lite.Messaging.ISendMessage"/>
    /// instances.
    /// </summary>
    public interface IMessageFactory
    {
        /// <summary>
        /// Creates a blank instance of a sendable message.
        /// </summary>
        /// <returns>
        /// A blank message.
        /// </returns>
        ISendMessage CreateMessage();

        /// <summary>
        /// Creates a blank instance of a sendable message with the specified
        /// conversation ID.
        /// </summary>
        /// <param name="conversationId">
        /// The globally unique identifier for the conversation in which the
        /// message will be participating.
        /// </param>
        /// <returns>
        /// A blank message.
        /// </returns>
        ISendMessage CreateMessage(object conversationId);
    }
}